N=10**6+10
pos=[]  # 记录边缘字符的位置
l,r=[0]*N,[0]*N
st=[False]*N  # 标记是否被删除，并用于答案输出
s=input()
n=len(s)
s="@"+s+"@"
# 构建双向链表
for i in range(1,n+1):
    l[i]=i-1
    r[i]=i+1
# 查找所有边缘字符
def check(i):
    if s[l[i]]=="@" or s[r[i]]=="@":
        return
    if s[l[i]]==s[i] and s[r[i]]!=s[i]:
        pos.append(r[i])
        pos.append(i)
    if s[l[i]]!=s[i] and s[r[i]]==s[i]:
        pos.append(l[i])
        pos.append(i)
def remove(j):
    r[l[j]]=r[j]  # 前一个数的右索引指向它的下一个数
    l[r[j]]=l[j]  # 后一个数的左索引指向它的前一个数
    # 删除j结点，置为True
    st[j]=True

for i in range(1,n+1):
    check(i)

while pos:
    ne=[]  # 记录本轮删除影响的相邻节点
    for p in pos:
        if st[p]:continue
        remove(p)
        ne.append(l[p])
        ne.append(r[p])
    pos=[]  # 清空旧的位置列表
    # 处理受影响节点
    for e in ne:
        if not st[e]:
            check(e)

ans=""
for i in range(1,n+1):
    if not st[i]:  # 不是删除的节点，则加入答案中
        ans+=s[i]
if ans:
    print(ans)
else:
    print("EMPTY")
